package exercise;

import exercise1.FangZiHeTong;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.TreeMap;

public class ProxyHouseInvocationHandler implements InvocationHandler {
    //资源真是掌控者
    private FangZiHeTong fangZiHeTong;

    public ProxyHouseInvocationHandler(FangZiHeTong fangZiHeTong) {
        this.fangZiHeTong = fangZiHeTong;
    }

    /**
     *
     * @param proxy 代理对象
     * @param method 代理对象执行的那个方法
     * @param args 代理对象执行那个方法传递的参数
     * @return 代理对象调用方法的返回值
     * @throws Throwable
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        TreeMap<Object, Object> treeMap = new TreeMap<>();
        treeMap.put("GongYu","公寓，100");
        treeMap.put("Bs","别墅，300");
        treeMap.put("Hjf","海景房，200");
        if (treeMap.containsKey(method.getName())) {
            System.out.println(treeMap.get(method.getName()));
        }
        return method.invoke(fangZiHeTong);
        //获取代理对象执行方法的名称
//        String name = method.getName();
//
//        if (name.equals("GongYu")) {
//            System.out.println("公寓，100");
//            method.invoke(fangZiHeTong);
//        } else if (name.equals("Bs")) {
//            System.out.println("别墅，300");
//            method.invoke(fangZiHeTong);
//        } else if (name.equals("Hjf")) {
//            System.out.println("海景房，200");
//            method.invoke(fangZiHeTong);
//        }
//        return null;
    }
}
